extends Card

@export var optional_sound: AudioStream


func get_default_tooltip() -> String:
	# 使用%操作符替换tooltip_text中的占位符
	return tooltip_text % 2


func get_updated_tooltip(_player_modifiers: ModifierHandler, _enemy_modifiers: ModifierHandler) -> String:
	# 动态更新提示文本，显示当前的格挡值和最终伤害值（包含力量增益和效果翻倍）
	var final_damage = 2  # 基础伤害值
	
	# 通过player_modifiers获取最终伤害值（包含力量增益和效果翻倍）
	if _player_modifiers:
		# 首先应用DMG_DEALT修改器（力量增益）
		var damage_with_power = _player_modifiers.get_modified_value(2, Modifier.Type.DMG_DEALT)
		
		# 然后应用CARD_EFFECT_MULTIPLIER修改器（效果翻倍）
		var multiplier_modifier = _player_modifiers.get_modifier(Modifier.Type.CARD_EFFECT_MULTIPLIER)
		if multiplier_modifier:
			var multiplier = multiplier_modifier.get_modified_value(1)
			final_damage = int(damage_with_power * multiplier)
			print("🗿 磐石脉冲动态tooltip: 基础伤害 2，力量增益后 %d，效果翻倍后 %d" % [damage_with_power, final_damage])
		else:
			final_damage = damage_with_power
			print("🗿 磐石脉冲动态tooltip: 基础伤害 2 → 最终伤害 %d（无翻倍效果）" % [final_damage])
	
	# 使用%操作符替换占位符
	return tooltip_text % final_damage


func apply_effects(targets: Array[Node], _modifiers: ModifierHandler) -> void:
	print("崩山劲卡牌被使用！")
	
	var player = null
	var block_value = 0
	
	# 通过targets参数获取场景树
	if targets.size() > 0:
		var tree = targets[0].get_tree()
		player = Card.find_player(tree)
		
		if player and player.stats:
			block_value = player.stats.block
			print("当前玩家格挡值: %d" % block_value)
	
	var final_damage = block_value * 2
	print("崩山劲总伤害: %d (格挡值: %d x 2)" % [final_damage, block_value])
	
	# 对所有敌人造成伤害 - 使用DamageEffect确保力量增益生效
	if targets.size() > 0:
		var tree = targets[0].get_tree()
		var all_enemies = tree.get_nodes_in_group("enemies")
		print("找到敌人数量: %d" % all_enemies.size())
		
		for enemy in all_enemies:
			if enemy is Enemy:
				print("崩山劲效果触发，目标: %s，伤害: %d" % [enemy.name, final_damage])
				
				# 创建DamageEffect并应用DMG_DEALT修改器（包括力量增益）
				var damage_effect := DamageEffect.new()
				damage_effect.amount = _modifiers.get_modified_value(final_damage, Modifier.Type.DMG_DEALT)
				damage_effect.sound = sound
				damage_effect.execute([enemy])
			else:
				print("目标不是Enemy类型: %s" % enemy.get_class())
		
		# 将玩家格挡值归零
		if player and player.stats:
			var old_block = player.stats.block
			player.stats.block = 0
			print("格挡值归零: %d → 0" % old_block)
		
		# 播放音效
		if sound:
			SFXPlayer.play(sound)
		elif optional_sound:
			SFXPlayer.play(optional_sound)
	else:
		print("没有目标，无法执行效果")
